% IR %rule :-unknown(P,fail). %15(1) become_effective(offer(A,B,C),T1):- reach(offer(A,B,C),B,T1), \+(become_effective(withdrawl(A,B,offer(A,B,C)),T2)). %15(2) become_effective(withdrawl(A,B,offer(A,B,C)),T2):- reach(withdrawl(A,B,offer(A,B,C)),B,T2), \+((reach(offer(A,B,C),B,T1),before(T1,T2))). %16(1) become_effective(revocation(A,B,offer(A,B,C),T):- reach(revocation(A,B,C),B,T), \+(((dispatched_an_acceptance,T1),before_or_at_the_same_time(T1,T))). \+(become_effective(offer(A,B,C),T1)):- reach(revocoation(A,B,offer(A,B,C),B,T1) %%HY このように否定号をヘッドに持つようなルールはPrologでは赦されません。取消効力発生を何かの傷害要件として形式化してはどうでしょうか。 %18(2) become_effective(acceptance(B,A,D),T):- reach(acceptance(B,A,D),A,T), become_effective(offer(A,B,C),T1). %23 is_concluded(contract(A,B,C),T):- become_effective(acceptance(B,A,offer(A,B,C)),T). before(T1,T2):- T1@